using System.Collections;
using System.Collections.Generic;
using UnityEngine;

/// <summary>
/// 控制子弹发射 游戏逻辑的主入口
/// </summary>
public class GameModule : Singleton<GameModule>
{
    private GameObject bulletPrefab;
    private ForecastManager forecastManager;
    private CollisionManager collisionManager;

    // private bool isGameRun = false;
    // public bool IsGameRun
    // {
    //     get
    //     {
    //         return isGameRun;
    //     }
    //     set
    //     {
    //         isGameRun = value;
    //         // 让子弹停止运行
    //         // forecastManager.Pause(value);
    //         // 让碰撞体停止运行
    //         // collisionManager.Pause(value);
    //         // 让得分层停止运行
    //         
    //         // 让预测事件停止运行
    //     }
    // }
    // /// <summary>
    // /// 开始游戏时需要调用的方法
    // /// </summary>
    // public void StartGame()
    // {
    //     isGameRun = true;
    // }
    //
    // /// <summary>
    // /// 暂停游戏时需要调用的方法
    // /// </summary>
    // public void PauseGame()
    // {
    //     isGameRun = false;
    // }
    //
    // /// <summary>
    // /// 结束游戏时需要调用的方法
    // /// </summary>
    // public void EndGame()
    // {
    //     isGameRun = false;
    // }
    private int currentLevelIndex = 0;
    /// <summary>
    /// 初始化游戏
    /// 读取游戏所需的配置信息
    /// </summary>
    private void InitGame()
    {
        // 1.读取游戏关卡信息
        GameModel.Instance.LoadLevel(++currentLevelIndex);

        // 2.初始化碰撞层信息
        collisionManager.Init();
        
        // 3.初始化其他配置信息


        // IsGameRun = false;
    }

    /// <summary>
    /// 模块的总控制器，控制游戏逻辑进程
    /// </summary>
    // Start is called before the first frame update
    void Start()
    {
        bulletPrefab = Resources.Load<GameObject>("Prefabs/bullet");
        forecastManager = ForecastManager.Instance;
        collisionManager = CollisionManager.Instance;
        InitGame();
    }

    // Update is called once per frame
    void Update()
    {
        if(Input.GetKeyDown(KeyCode.Mouse0))
        {
            GameObject go = Instantiate(bulletPrefab,transform);
            BulletPrefabs bullet = go.transform.GetComponent<BulletPrefabs>();
            bool b = forecastManager.IsAttackCollisions(bullet);
            if(b)//碰撞了
            {

            }
            else//得分了
            {

            }
        }
    }
}